{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "134e7f9d",
   "metadata": {},
   "source": [
    "# Demo 4: Extracting activation functions\n",
    "\n",
    "The KAN diagrams give intuitive illustration, but sometimes we may also want to extract the values of activation functions for more quantitative tasks. Using the indexing convention introduced in the indexing notebook, each edge is indexed as $(l,i,j)$, where $l$ is the layer index, $i$ is the input neuron index, and $j$ is output neuron index."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2075ef56",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 500x400 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from kan import *\n",
    "import matplotlib.pyplot as plt\n",
    "# create a KAN: 2D inputs, 1D output, and 5 hidden neurons. cubic spline (k=3), 5 grid intervals (grid=5).\n",
    "model = KAN(width=[2,5,1], grid=5, k=3, seed=0, noise_scale_base = 1.0)\n",
    "x = torch.normal(0,1,size=(100,2))\n",
    "model(x)\n",
    "model.plot(beta=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "d3fe2e03",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7fa93e7676a0>]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8wUlEQVR4nO3df1zV9d3/8efh10FUjgIJqAik/ZCoTByGZq2WpHU5V61srbpq5pVdtS5z27Vc2wzXRrva1dpqWm21rWzNrdp32bhodLmrLHWUWEb0wxRD5RACekCRX+d8vn/gIZDD4QNyfj/ut9u5KZ/zPocXHPQ8ef+0GIZhCAAAIEREBboAAACAoSC8AACAkEJ4AQAAIYXwAgAAQgrhBQAAhBTCCwAACCmEFwAAEFIILwAAIKTEBLqAkeZyuVRbW6uxY8fKYrEEuhwAAGCCYRhqaWnRxIkTFRXlvW8l7MJLbW2tMjIyAl0GAAAYhn379mny5Mle24RdeBk7dqyk7i8+MTExwNUAAAAzmpublZGR0fM+7k3YhRf3UFFiYiLhBQCAEGNmygcTdgEAQEghvAAAgJBCeAEAACGF8AIAAEIK4QUAAIQUwgsAAAgphBcAABBSCC8AACCkhN0mdQAAwDecLkPl1U2qb2nThLHxys9OUnSU/88RJLwAAIBBlVbaVbSxSnZHW8+1dFu8Vi/K0YLcdL/WwrARAADwqrTSrtvXV/QJLpJU52jT7esrVFpp92s9hBcAADAgp8tQ0cYqGR7uc18r2lglp8tTC98gvAAAgAGVVzf163HpzZBkd7SpvLrJbzURXgAAwIDqWwYOLsNpNxIILwAAYEATxsaPaLuRQHgBAAADys9OUrotXgMtiLaoe9VRfnaS32oivAAAgAFFR1m0elGOx/vcgWb1ohy/7vdCeAEAAF4tyE3XT67K7Xc9zRavdTfM9Ps+L2xSBwAABpUQ1x0ZslISdPelp7PDLgAACG5v7e1eCn3JGalaPGNSQGshvAAAgAG5zzP636p6SdKszHGBLUiEFwAAMABP5xndt7FKUVEWv89z6Y0JuwAAoJ+BzjM62NIekPOMeiO8AACAPoLxPKPeCC8AAKCPYDzPqDe/hJe1a9cqOztb8fHxysvL0+bNm722f/bZZ3XuuecqISFB6enpuuWWW9TY2OiPUgEAiHjBeJ5Rbz4PLxs2bNCKFSt07733aseOHZo3b54WLlyompoaj+3feOMN3XTTTVq6dKnef/99/fnPf9Zbb72lW2+91delAgAASXsbjppq58/zjHrzeXh56KGHtHTpUt16662aPn26Hn74YWVkZGjdunUe22/btk1ZWVm66667lJ2drQsuuEC33Xab3n77bV+XCgBAxHO6DD1X7rmDoTd/n2fUm0/DS0dHh7Zv367CwsI+1wsLC7VlyxaPj5kzZ47279+vkpISGYahzz77TM8//7yuuOIKj+3b29vV3Nzc5wYAAIanvLpJdc3tg7a77gtTArK7ruTj8NLQ0CCn06nU1NQ+11NTU1VXV+fxMXPmzNGzzz6rJUuWKC4uTmlpaRo3bpweeeQRj+2Li4tls9l6bhkZGSP+dQAAECnMzmPJSknwcSUD88uEXYulbzIzDKPfNbeqqirddddd+uEPf6jt27ertLRU1dXVWr58ucf2q1atksPh6Lnt27dvxOsHACBSmJ3HEqj5LpKPd9hNSUlRdHR0v16W+vr6fr0xbsXFxZo7d66+853vSJLOOeccjR49WvPmzdP999+v9PS+O/pZrVZZrVbffAEAAESY/OwkpdviVedo87jPi0Xdp0kHar6L5OOel7i4OOXl5amsrKzP9bKyMs2ZM8fjY1pbWxUV1bes6OhoSd09NgAAwHeioyxavSjH433uMZPVi3ICNt9F8sOw0cqVK/Wb3/xGTz31lD744APdfffdqqmp6RkGWrVqlW666aae9osWLdKLL76odevWac+ePXrzzTd11113KT8/XxMnTvR1uQAARLwFuel69PrzdGI8SbPFa90NMwN6rpHkh4MZlyxZosbGRq1Zs0Z2u125ubkqKSlRZmamJMlut/fZ8+Xmm29WS0uLHn30UX3rW9/SuHHjdMkll+inP/2pr0sFAADHTUkaLUPSqNgo/eSqc5SW2D1UFMgeFzeLEWZjMc3NzbLZbHI4HEpMTAx0OQAAhKTfbN6j+//2gS45c4KeuvkLPv98Q3n/5mwjAADQj/vcotkBnJg7EMILAADow+Uy9Nbe7vASyFVFAyG8AACAPnbVH9Gh1k6Nio1W7iRboMvph/ACAAD6KK9ulCTlZY5XbHTwRYXgqwgAAATUP6uDd8hIIrwAAIBeDMPomaxLeAEAAEHv08ZW1be0Ky46SjMyxgW6HI8ILwAAoMc/j893mZExTvGx0QGuxjPCCwAA6BHs810kPxwPAAAAgp/T1T3X5f8+qpckzcocH+CKBkbPCwAAEa600q4LfrpJX/v1NjUd7ZQkfffFnSqttAe4Ms8ILwAARLDSSrtuX18hu6Otz/X65nbdvr4iKAMM4QUAgAjldBkq2lglTyc0u68VbayS0xVcZzgTXgAAiFDl1U39elx6MyTZHW09+74EC8ILAAARqr5l4OAynHb+QngBACBCTRgbP6Lt/IXwAgBAhMrPTlJa4sDBxCIp3RYfdHu+EF4AAIhQZVV1aut0erzPcvzP1YtyFB1l8dgmUNikDgCACFRaadfy9RUD3j8uIVbFV52tBbnpfqzKHHpeAACIME6XoXtefM9rG8MwND8nzU8VDQ3hBQCACLNtT6MOt3Z6bXP4WJe27Wn0U0VDQ3gBACDCbN1tLpSYbedvhBcAACKO2R1zg2tnXTfCCwAAEabg1JQRbedvhBcAACLM+VOTNS4h1mubcQmxOn9qsp8qGhrCCwAAESY6yqIHrjrba5sHrjo76PZ3cSO8AAAQgRbkpuu/rzm33/W0RKseu2FmUO7v4sYmdQAARKjEUd1DR+m2eN2z8ExNGNt9FECw9ri4EV4AAIhQ/zy+j8sXz5igxTMmBbga8xg2AgAgQm2r7g4v558aXAcvDobwAgBABHIc69T7tc2SpPNPDc5VRQMhvAAAEIHe3tskw5BOTRmt1MT4QJczJIQXAAAikPvcotkhNmQkMWEXAICI4nQZKq9uUmllnSQpP4vwAgAAglRppV1FG6tkd7T1XCv+nw81Ki46qPd1ORHDRgAARIDSSrtuX1/RJ7hI0sGWdt2+vkKllfYAVTZ0hBcAAMKc02WoaGOVxzOi3deKNlbJ6QrOU6RPRHgBACDMlVc39etx6c2QZHe0qby6yX9FnQTCCwAAYa6+ZeDgMpx2gUZ4AQAgzE0Ya24fF7PtAo3wAgBAmMvPTtK4hNgB77eo+3DG/OzQWDZNeAEAIMyVVdXpcGvngPcbklYvygn606TdCC8AAIQxp8vQt/70rtc24xJiNT8nzU8VnTzCCwAAYWzFHyt0tMPptc3h1s6QWWkkEV4AAAhbHV0uvbyzzlTbUFlpJBFeAAAIW89s3etxYzpPQmWlkUR4AQAgbO1tbDXVLiEuOmRWGkmEFwAAwpi5fpcvZI0PmZVGEuEFAICwZTaPfPmcib4tZIQRXgAACENOl6GNO82dFD1xfIKPqxlZhBcAAMJQeXWTmo4OvDGdW/LouJCa7yIRXgAACEuvVplbIr14xsSQmu8iEV4AAAg7Tpehv7xzwFTbUNpZ180v4WXt2rXKzs5WfHy88vLytHnzZq/t29vbde+99yozM1NWq1VTp07VU0895Y9SAQAIeeE8ZCRJMb7+BBs2bNCKFSu0du1azZ07V48//rgWLlyoqqoqTZkyxeNjrr32Wn322Wd68sknNW3aNNXX16urq8vXpQIAEBbM7pYbikNGkh/Cy0MPPaSlS5fq1ltvlSQ9/PDDeuWVV7Ru3ToVFxf3a19aWqrXXntNe/bsUVJSdxrMysrydZkAAIQNs7vlhuKQkeTjYaOOjg5t375dhYWFfa4XFhZqy5YtHh/z0ksvadasWfqv//ovTZo0Saeffrq+/e1v69ixYx7bt7e3q7m5uc8NAIBIlp+dpHRbvLz1qaTb4kNyyEjycXhpaGiQ0+lUampqn+upqamqq/M8C3rPnj164403VFlZqb/85S96+OGH9fzzz+uOO+7w2L64uFg2m63nlpGRMeJfBwAAoSQ6yqLVi3I83mc5flu9KCckh4wkP03YtVj6fnMMw+h3zc3lcslisejZZ59Vfn6+Lr/8cj300EP63e9+57H3ZdWqVXI4HD23ffv2+eRrAAAglCzITdcDV53d73qaLV7rbpipBbnpAahqZPh0zktKSoqio6P79bLU19f3641xS09P16RJk2Sz2XquTZ8+XYZhaP/+/TrttNP6tLdarbJarSNfPAAAIS4+LlqSlJmUoJWFp2vC2O6holDtcXHzac9LXFyc8vLyVFZW1ud6WVmZ5syZ4/Exc+fOVW1trY4cOdJz7eOPP1ZUVJQmT57sy3IBAAgr2/Y0SpLm56Rq8YxJKpiaHPLBRfLDsNHKlSv1m9/8Rk899ZQ++OAD3X333aqpqdHy5csldQ/73HTTTT3tr7/+eiUnJ+uWW25RVVWVXn/9dX3nO9/RN77xDY0aNcrX5QIAEDa27u4OLwVTkwNcycjy+VLpJUuWqLGxUWvWrJHdbldubq5KSkqUmZkpSbLb7aqpqelpP2bMGJWVlemb3/ymZs2apeTkZF177bW6//77fV0qAABho/bwMe1tbFWURfpCiK4qGojFMAwj0EWMpObmZtlsNjkcDiUmJga6HAAAAuKF7fv1rT+/q3Mn2/TXOy8IdDmDGsr7N2cbAQAQhrYen+9yfpgNGUmEFwAAwpJ7vsucqSkBrmTkEV4AAAgz+5padeDwMcVEWTQrc3ygyxlxhBcAAMKMu9fl3IxxGm31+docvwu/rwgAgAjldBkqr27Sn97uXsU7O8xWGbkRXgAACAOllXbd91KV6prbeq79sXyfzplsC+mjADxh2AgAgBBXWmnX8vUVfYKLJDW1dmj5+gqVVtoDVJlvEF4AAAhhTpehe158z2ubVS++J6crfLZ1I7wAABDCtu1p1OHWTq9tDrV29pxzFA4ILwAAhLAtuxtGtF0oILwAABDCDhw6NqLtQgHhBQCAEDZxXPyItgsFhBcAAEJYbLS5t/K5U0/xcSX+Q3gBACBEOV2GNry1b9B24xJiw+qARsILAAAhqry6SXXN7YO2u2VOtqKjLH6oyD8ILwAAhKj6lrbBG0nKSknwcSX+RXgBACBETRhrbhKu2XahgvACAECIys9OUrotXgMNCFkkpdvilR9mBzQSXgAACFHRURatXpQjTxv/uwPN6kU5YTXfRSK8AAAQ0hbkpuvL5/Q/NTrNFq91N8wMuxOlJSkm0AUAAICTU3+ke8XRN+Zm6dyMcZowtnuoKNx6XNwILwAAhLC2TqcqPj0sSbrh/EydesqYwBbkBwwbAQAQwrZ/ekgdTpfSEuOVnTI60OX4BT0vAACEIKfLUHl1k363pVqSVHBqkiyW8BwmOhHhBQCAEFNaaVfRxirZHZ9vUrfpo4MqrbSH5QTdEzFsBABACCmttOv29RV9goskOY516vb1FSqttAeoMv8hvAAAECKcLkNFG6s87uviVrSxSk6Xtxahj/ACAECIKK9u6tfj0pshye5oU3l1k/+KCgDCCwAAIcLsQYxm24UqwgsAACGi+uARU+1Sxlh9XElgEV4AAAgBTpeh32/da65xeE95IbwAABAKyqubdKi1y1TbhqPtPq4msAgvAACEgFer6ky3nTA23oeVBB7hBQCAIOd0Gfrj2/tMtU0eHaf87CQfVxRYhBcAAILctj2NOtruNNX2R4tzw/Y0aTfCCwAAQW7r7kZT7c7LGKfLz+F4AAAAEGCGyeVDc6Yl+7iS4EB4AQAgyI0bFTui7UId4QUAgCBXe/iYqXbhvjmdG+EFAIAg5nQZ+tP2/abaptlG+bia4EB4AQAgiD26aZeplUaRsETajfACAECQcroM/fbNvabaLp4xMeyXSLsRXgAACFLl1U06fKzTVNv5OWk+riZ4EF4AAAhS9S1tptqNS4iNmCEjifACAEDQMntG0S1zsiNmyEgivAAAELTys5OUbouXt1gyLiFWd14yzW81BQPCCwAAQSo6yqLVi3K8tnngqrMjqtdFIrwAABDU5uekacWlp/cLKOm2eD12w0wtyA3/s4xOFBPoAgAAgGellXYVbayS3fH5xN2x8TG69YJs3XnJaRHX4+JGzwsAAEGotNKu29dX9AkuknSkrUsPv7pLZVV1Aaos8AgvAAAEGafLUNHGKo9nSbuvFW2sktNl7rTpcEN4AQAgyJRXN/XrcenNkGR3tKm8usl/RQURwgsAAEHG7OZ0ZtuFG7+El7Vr1yo7O1vx8fHKy8vT5s2bTT3uzTffVExMjGbMmOHbAgEACCJmN6cz2y7c+Dy8bNiwQStWrNC9996rHTt2aN68eVq4cKFqamq8Ps7hcOimm27Sl770JV+XCABAUBlsczqLupdKR9KRAL35PLw89NBDWrp0qW699VZNnz5dDz/8sDIyMrRu3Tqvj7vtttt0/fXXq6CgwNclAgAQVLxtTucONKsX5bBU2hc6Ojq0fft2FRYW9rleWFioLVu2DPi43/72t9q9e7dWr17ty/IAAAhaC3LT9YN/6R9g0mzxWhehm9O5+XSTuoaGBjmdTqWmpva5npqaqro6z+vTd+3apXvuuUebN29WTMzg5bW3t6u9vb3n4+bm5pMrGgCAIOFeCH32pETdOu9UTRjbPVQUqT0ubn6ZsGux9P0mG4bR75okOZ1OXX/99SoqKtLpp59u6rmLi4tls9l6bhkZGSNSMwAAgfbmJw2SpH85Z6IWz5ikgqnJER9cJB+Hl5SUFEVHR/frZamvr+/XGyNJLS0tevvtt3XnnXcqJiZGMTExWrNmjd59913FxMRo06ZN/R6zatUqORyOntu+fft89vUAAOAvHV0ubdvTKEm64LSUAFcTXHw6bBQXF6e8vDyVlZXpyiuv7LleVlamxYsX92ufmJio9957r8+1tWvXatOmTXr++eeVnZ3d7zFWq1VWq3XkiwcAIIB21BxSa4dTyaPjND0tMdDlBBWfH8y4cuVK3XjjjZo1a5YKCgr0xBNPqKamRsuXL5fU3XNy4MABPf3004qKilJubm6fx0+YMEHx8fH9rgMAEI6cLkPl1U363ZvVkqSCqcmKYqioD5+HlyVLlqixsVFr1qyR3W5Xbm6uSkpKlJmZKUmy2+2D7vkCAEAk8HSK9OZdDSqttEf06qITWQzDCKtTnZqbm2Wz2eRwOJSYSDcbACA0uE+R9vSmbJHCfnn0UN6/OdsIAIAA83aKtFsknyJ9IsILAAABxinSQ0N4AQAgwDhFemgILwAABBinSA8N4QUAgADjFOmhIbwAABBgnCI9NIQXAACCwILcdP3ya+f1633hFOn+fL5JHQAAMOeUsVYZkhLjY7Rmca5SEzlF2hPCCwAAQeL1jw9Kki45c4K+ct6kAFcTvBg2AgAgSLy+qzu8XHj6KQGuJLgRXgAACAIHW9pVeaBZkjTvNMKLN4QXAACCwBufdPe6nDUxUaeMtQa4muBGeAEAIAi8/nGDJIaMzCC8AAAQYC6X0TNZ9yLCy6AILwAABFiVvVmNRzs0Oi5aM6eMD3Q5QY/wAgBAgL12vNelYGqK4mJ4ax4M3yEAAALstZ4ho5QAVxIaCC8AAARQS1unKj49JEm66PQJAa4mNBBeAAAIoK27G9XlMpSVnKApyQmBLickcDwAAAAB4HQZKq9u0u+37pUkXXAaQ0ZmEV4AAPCz0kq77nupSnXNbT3X/rbTrgumpXB6tAkMGwEA4EellXYtX1/RJ7hI0qHWTi1fX6HSSnuAKgsdhBcAAPzE6TJ0z4vveW2z6sX35HQZfqooNBFeAADwk217GnW4tdNrm0Otndq2p9FPFYUmwgsAAH6ydbe5UGK2XaQivAAA4Ddmh4MYNvKG8AIAgJ8UnGpuObTZdpGK8AIAgJ84jnXIMkibcQmxOn9qsl/qCVWEFwAA/KC00q47/rBj0AGhB646W9FRg0WcyEZ4AQDAx5wuQ0Ubq7wGF4uktdfPZJM6EwgvAAD4WHl1k+yONq9tDEnjR8f5p6AQR3gBAMDH6lu8B5ehtot0hBcAAHxswtj4EW0X6QgvAAD42KGj7YO2SbfFKz87yQ/VhD7CCwAAPuR0GfrR3z4YtN0PrshhlZFJhBcAAHzIzGRdicm6Q0F4AQDAh5isO/IILwAA+NDehqOm2jFZ17yYQBcAAEC4Kq206+ev7vLaxiIpjcm6Q0LPCwAAPuDeVdeM1YuYrDsUhBcAAHzA7ETdFZeezpEAQ0R4AQDAB8xOwM1KSfBxJeGH8AIAgA+wq67vEF4AAPCB/OwkpdviNdBMFovYVXe4CC8AAPhAdJRF37t8ugwP97kDDRN1h4el0gAA+EBxSZV+vbna431ptnitXpTDRN1hIrwAADDCikuq9PjrnoOLJP3LOWkEl5PAsBEAACOoo8s1YI+L25Nv7FVHl8tPFYUfwgsAACPoma175fI00aUXl9HdDsNDeAEAYAR92tQ6ou3QH+EFAIARlJlkbtM5s+3QH+EFAIARdGNBlgZb/Rxl6W6H4SG8AAAwguJiorRsXrbXNsvmZSsuhrfg4eI7BwDACLtn4XSNieu/G0mURbrtwmytujwnAFWFD7+El7Vr1yo7O1vx8fHKy8vT5s2bB2z74osvav78+TrllFOUmJiogoICvfLKK/4oEwCAEbFzv0NHOroUH2PRPQvP0E0FmfrBFdP14Y8WElxGgM/Dy4YNG7RixQrde++92rFjh+bNm6eFCxeqpqbGY/vXX39d8+fPV0lJibZv366LL75YixYt0o4dO3xdKgAAI6Kk0i5J+lJOmpZfNE1rFudq6bxTGSoaIRbDMAZZjX5yZs+erZkzZ2rdunU916ZPn66vfOUrKi4uNvUcZ511lpYsWaIf/vCHg7Ztbm6WzWaTw+FQYmLisOsGAGA4DMPQRQ/+n2qaWrX26zN1+dnspGvGUN6/fRoBOzo6tH37dhUWFva5XlhYqC1btph6DpfLpZaWFiUleT51s729Xc3NzX1uAAAEyvu1zappalV8bJS+eMYpgS4nLPk0vDQ0NMjpdCo1NbXP9dTUVNXV1Zl6jv/+7//W0aNHde2113q8v7i4WDabreeWkZFx0nUDADBUTpehrbsb9YtXP5YkffH0U5TgYdIuTp5fBt8slr4L3g3D6HfNk+eee0733XefNmzYoAkTJnhss2rVKjkcjp7bvn37RqRmAADMKq2064KfbtLXfr1NZR/US5K27WlS6fG5LxhZPg0vKSkpio6O7tfLUl9f36835kQbNmzQ0qVL9ac//UmXXnrpgO2sVqsSExP73AAA8JfSSrtuX18hu6Otz3XHsU7dvr6CAOMDPg0vcXFxysvLU1lZWZ/rZWVlmjNnzoCPe+6553TzzTfrD3/4g6644gpflggAwLA5XYaKNlbJ08oX97WijVVyDnZSI4bE54NxK1eu1I033qhZs2apoKBATzzxhGpqarR8+XJJ3cM+Bw4c0NNPPy2pO7jcdNNN+sUvfqHzzz+/p9dm1KhRstlsvi4XAADTyqub+vW49GZIsjvaVF7dpIKpyf4rLMz5PLwsWbJEjY2NWrNmjex2u3Jzc1VSUqLMzExJkt1u77Pny+OPP66uri7dcccduuOOO3qu/+u//qt+97vf+bpcAABMq28ZOLgMpx3M8fk+L/7GPi8AAH/5xasf6+ev7hq03XPLzqfnZRBBs88LAADhyuky9Fy5593ie0u3xSs/2/NeZRgewgsAAMNQXt2kuub2Qdtd94Upio4afHsQmEd4AQBgGMzOY8lKSfBxJZGH8AIAwDAkJcSZajdhbLyPK4k87FsMAMAQFZdU6YnXq722sUhKY76LTxBeAAAYguKSKj1uIrhI0upFOcx38QHCCwAAJnV0ufTrzd6Di9Td47J6UY4W5Kb7oarIw5wXAABMembrXpnZ6f8bc7MILj5EeAEAwKRPm1pNtdt36JiPK4lshBcAAEzKTDK37NlsOwwP4QUAAJNuLMjSYPNvoyzd7eA7hBcAAEyKi4nSsnnZXtssm5etuBjeXn2J7y4AAEOw6vIcXTtrcr/rURbptguzterynABUFVlYKg0AgElOl6Hy6iYdau2QJE07ZbTmTEtRZlKCbizIosfFTwgvAACYUFppV9HGKtkdn59p1HC0Q3OmJrMs2s+IiAAADKK00q7b11f0CS6S5Gjt1O3rK1RaaQ9QZZGJ8AIAgBdOl6GijVXytDed+1rRxio5zexehxFBeAEAwIvy6qZ+PS69GZLsjjaVVzf5r6gIR3gBAMCLV6vqTLWrbxk44GBkEV4AABiA02XoL+8cMNV2wth4H1cDN8ILAAADKK9uUtPRzkHbJY+OU352kh8qgkR4AQBgQD8uqTLVbvGMiYoe7NwAjBjCCwAAHhzrcKryQLOptvNz0nxcDXojvAAA4MFPTPa6JMRFM2TkZ4QXAAA82NvYaqpdZnICQ0Z+RngBAMCDrOQEU+1mZY73cSU4EeEFAAAPvmfydGiz7TByCC8AAHgwKi5al06f4LXN/JwJGhUX7aeK4EZ4AQBgADfPyR7wvvk5E/Trm77gx2rgFhPoAgAACFbPlddIkq7Ln6zYqCjtbWxVVnKCvnd5Dj0uAUR4AQDAg4Mt7Xrl/e5zjW46P1s5ExMDXBHcGDYCAMCD57fvV5fL0IyMcQSXIEPPCwAAxzldhsqrm/RZc5t+t6VaknR9/pQAV4UTEV4AAJBUWmlX0cYq2R1tPdcskqyxDFIEG8ILACDilVbadfv6ChknXDckrfjjO7LGRGlBbnogSoMHxEkAQERzugwVbazqF1zcDElFG6vkdA3UAv5GeAEARLTy6qY+Q0We2B1tKq9u8lNFGAzhBQAQ0eqavQeXobaD7xFeAAARrelI+4i2g+8RXgAAEW1cQpypdkmjzbWD7xFeAAARq7TSrh+XVJlqm2Yb5eNqYBZLpQEAEWmg5dGepNvilZ+d5POaYA49LwCAiDPY8ujeLJJWL8pRdJTF12XBJMILACDimFkeLUnJo+O07oaZbFAXZAgvAICI82pVnal2379iOsElCBFeAAARxeky9Jd3DphqyyTd4ER4AQBElPLqJjUd7Ry0XfLoOCbpBinCCwAgopgdMlo8YyKTdIMU4QUAEDGGMmQ0PyfNx9VguAgvAICIwZBReCC8AAAiRn2LucMVGTIKboQXAEDE2Ntw1FQ7hoyCG+EFABARSivt+vmruwZtx1EAwc8v4WXt2rXKzs5WfHy88vLytHnzZq/tX3vtNeXl5Sk+Pl6nnnqqHnvsMX+UCQAIU+7jAAbDUQChwefhZcOGDVqxYoXuvfde7dixQ/PmzdPChQtVU1PjsX11dbUuv/xyzZs3Tzt27ND3vvc93XXXXXrhhRd8XapXTpehrbsb9dd3Dmjr7kY5XWZOxAAABAOzxwGsuPR0dtQNARbDMHz6Ljx79mzNnDlT69at67k2ffp0feUrX1FxcXG/9t/97nf10ksv6YMPPui5tnz5cr377rvaunXroJ+vublZNptNDodDiYmJI/I1lFbaVbSxqs8PfrotXqsX5QTND7nTZai8ukn1LW2aMLa7y5PfHACg21/fOaD/+OM7g7b7xXUztHjGJN8XhH6G8v4d48tCOjo6tH37dt1zzz19rhcWFmrLli0eH7N161YVFhb2uXbZZZfpySefVGdnp2JjY31WrycDHZle52jT7esrguLArlAIVwAQSBPGxo9oOwSWT4eNGhoa5HQ6lZqa2ud6amqq6uo873BYV1fnsX1XV5caGhr6tW9vb1dzc3Of20jxdmS6+1rRxqqADiG5w9WJ3aHucFVaaQ9QZd2cLkNv7mrQz175UD975SO9+UkDQ24A/C4/O0lptoGDiUVM1A0lPu15cbNY+g5fGIbR79pg7T1dl6Ti4mIVFRWNQJX9DTZGakiyO9p0btErGmONlTU2SvEx0bLGRskaEyVrTHT3n7Gf/z0+9vi1mChZe/+99+N6rrsf0+u5erVzGfIarizqvn9+TlpAhpBKK+2658X3dLj18w2hHv3HJxqXEKsHrjqbXiEAfhMdZdE1eZP1yKZP+t3n/t+Ribqhw6fhJSUlRdHR0f16Werr6/v1rrilpaV5bB8TE6Pk5OR+7VetWqWVK1f2fNzc3KyMjIwRqN78ZkZH2p060u4ckc85FDFRFnV56cVwh6tv//kdTU9P1BhrrMbGx/S6xWqMtfvvo+NiFDWC/2hLK+1avr7C432HWzu1fH2FHguCITcAkcEwDL3xSXfv/ei4aB3t+Pz/7DSG2UOOT8NLXFyc8vLyVFZWpiuvvLLnellZmRYvXuzxMQUFBdq4cWOfa3//+981a9Ysj/NdrFarrFbryBZ+nNmxz5999RydmZ6o9i6n2jtdau9yqb3LqbbO7j/bu1zHrx//e5dL7Z0n3H/8Md4e39blVO/p1d6CS29/2VGrv+yo9drGYpHGxHUHmTHHg83Y+Jjj4eZ46LG67+/9cWyvx8TIGhMtp8vQfS+9P2hdvuwVYgIzgN4272rQjprDssZE6dVvXaS9Da38/xDCfD5stHLlSt14442aNWuWCgoK9MQTT6impkbLly+X1N1zcuDAAT399NOSulcWPfroo1q5cqWWLVumrVu36sknn9Rzzz3n61L7yc9OUrotXnWONo9DMxZ1J/YrZ072yw++YRjqchk94WfL7kZ987kdgz6uMCdVo60xamnrUktbp1raunSk/fO/d7kMGYbU0t6llvYuyTH8GuOiu4e5mtu6Bm1rd7Tp/z6q1yVnTvA6jDhUg01gJtgAkcUwDD386seSpK/PzlS6bZTSbaMCXBVOhs/Dy5IlS9TY2Kg1a9bIbrcrNzdXJSUlyszMlCTZ7fY+e75kZ2erpKREd999t371q19p4sSJ+uUvf6mrr77a16X2Ex1l0epFObp9fYUsUp8AE4gxUovFothoi2KjozTGGqPLz07XT0o+GDRcrbshb8AaDaM7DDW3depIW9fxgNOlI+2dam7r6nWt83jg6Q44PSHo+H3uLtgOp0sdTpfpr2np79+WNSZKp4y1dt/GWD//e6+PU47/GR8b7fX5Blsd9m8XZuuld+2szAIiyOZdDao43uuy/KJTA10ORoDP93nxt0jb58X9Zi15Dlf+WsrtdBk9vTlvftKg777wnk8+z9j4mAFDTvLoOP3nCzvVcKRjSM851O8VPTdA6DAMQ199bKu2f3pI35ibrR8uygl0SRjAUN6/CS8mBfMbVrCFK6fL0NwH/ld1ze1e26Xb4vXqyovUdLRDB4+062BLr5uHjzu6zPfoDJW7l+qN717i9XUNtu81AM/c/2dv3nVQa/9vt+KiLXrju5doQiL7uAQrwosPwkuwC7Zw5W21kdtQVhsZhqHmti6v4eaT+iOqPXzspOq+9/LpWnh2mtJto/p9/wYakvJ3LxcA7zz9kpEQF62Hrj2Xf6NBjPASgeElGHna50WSxifEqtgH+7xs3d2or/1624g8V1x0lCYnjVJW8mhlJicoY/woPbLpEx064WtxM9tzA8C3BvolQ+r+d8ovGcEraI4HQGRbkJuu+Tlp2ra7UVv3NEiyqGBqss4/Ndknb/CDrQ4zI90Wr4Yj7epwurTn4FHtOXjU1OPce+qUVzepYGr//YgA+F73Ng2eN+50C+TGnRg5hBf4VHSURXNPS9Hc01L88rkGWh02mN49J5JUe/iYappatbfxqD5tbNW2PQ3auX/woyd+8Nf3dOFpE3TWxETlTEzUtAljFBvt88PbAUh6dNMu1TUPvis6v2SEPsILwsqC3HStu2Gmx0m1Xz43XU+8Xi1p8GXvGUkJykhK0Nxp3aHL7JDUJ/VH9Ul9dc/HcdFROj1tjM5KtynneKDp3u14eP/0nC7Dbz1ZQCgprbTr56/uMtXW7O7pCF6EF4Qd93CVpwnM500Z3y/YmNka3MyGhclj4vTty87Qh/YWVdmb9UFts1rau1R5oFmVB/r22mQlJ+isiZ8HmrPSEwddBcFZUYBn7kN0zeLk6NDHhF1EnOGuzBrqnjoul6H9h47p/VqHquzNqqpt1vu1zQN2a6eMsXaHmfTEnmGnrOTRio6yjPjqLSCcDGWyfjoT64MWq40IL/CRkdjnpfFIe58wU2Vv1p6DR+TpqKqEuGidkTpGH9a16Fin931uvP2nHGxL6YGR9Nd3Dug//viOqbaE/ODFaiPAR7wNSZmVPMaqeaedonmnndJz7ViHUx/WdQeZ92u7g82Hdc1q7XBqxz5zh00NNBGRjfUQ7swOA9196en8zIcJwgswRNFRlhFfqTAqLlrnTRmv86aM77nmdBmqbjiip7d+qqe3fmrqeV7eWauMpFGaPD5B0uBnPbHnBUKd02XI5TJkGxUrxzHP+zBJUlqiVXdeMs2PlcGXCC9AkIqOsmjahLFamJtuOrw8+88aPfvPGk0aN0r52eO16cODHicYG+qeq9N7zwuGlhBqPPUqnsj9E3zfl8/i5zmMEF6AIJefnaS0ROugZ0WNtkZr2iljVFnbrAOHj+kvO7wfldB7zwvHsY7+q7ASrfpa/hRlpYwmzCDoeNtJtzczqwkReggvQJCLjrLovi+fNehqo/++pvvclqPtXdr+6SE9s22vyqrqB33+0kq7nt76af+hpeb2PvtmjBsVq1vmZunOS04jxCCg3EujvQWXcaNi9auvz2QfpDDF1p9ACFiQm67HbpipcQmx/e4bnxDbZwXFaGuMLjz9FH1j7qmmnvv3HoKLJ4ePdernr+7SOUWv6Ecb39fW3Y1yeloiBfhYeXWT16EiqfvnNcpiIbiEKXpegBAx1LOizJz1NNRjFCTpaLtTT765V0++uZdVSwgIszvkspNu+KLnBQgh7rOivn3Zmfr2ZWdo7rSUAX+zdJ/1JH0+adHNcvx2y9ysk6rHvWqptNJ+Us8DDIXZpdHspBu+CC9AGHOf9ZRm6/ufeJotXutumKn5OWkn9fzuXpuijVUMIcFv8rOTlBAXPeD9FnXvZZSfneS/ouBXDBsBYc7bxnpOlzHo0NJgvJ3Uy/Jr+EJpZZ1aO5we7/N00CrCD+EFiAADbaznHlq6fX3FsOa/9PbbN6tlGxWr6eljZbFY2NkXI6Z3CHa6DP3g/1VKkubnpKrygGPIB60i9HG2EQBTm32ZlZ0yWqenjtEr73/W776BDrEEBlKy067v/7VSTUc7+lyfdsoYla6YJ4vFQu9emOBgRsILMGS9f7vd29Cq375ZrcNetlt3s0iyJcTqC5nj9dquBnV0eT9A0qLu34452ReDKS6p0uOvVw94P4cshhcOZgQwZCcOLd15yTQ9uukTryHGHT0euOpsLchN15H2Lj3+2m49sumTAT+PtzkygNvL79R6DS5S3+MtEFlYbQTAo+goi/7j0tO0/Qfz9dyy8/WNuVlKGh3Xp4171ZL7t98x1hhNmzDG1POXvFer1o6uAe93ugxt3d2ov75zgA3xIkzJzlp98487Bm3nDsGIPPS8APDK3SNTMDVZ916RM+j8ArN7azyzrUYvVBzQgtw0XXXeZBVM/XyzPU9zcJJGx+r+xbm6/JyJI/fFIeiUVtr1738YPLi4sRFdZCK8ADBtoFVLvZnZ2XeMNUbjE2K179AxvVhxQC9WHFBaYrwWnzdRE8bG6/6X+59b03S0U//+hx1aVGnXpTlpTM4MQ+4zi4aCjegiE+EFwIjytvzaHTN+ds05uuysNFXUHNILFQf08ru1qmtu0+Ov7Rn0+TfurNPGnXWSWHodbsycWdRb8ug4NqKLUMx5ATDiBtvZd0FuuiwWi/Iyk/STK8/WW9+/VI/dMFN5meOH9Hk4niC8DHUI6EeLc+l5i1D0vADwCW87+57IGhOtBbnpau9yafunh0x/DkPdvTmsOgkPQxkCuu3CbF1+Dj1ukYrwAsBnzMyR6W048xdOXHrNkQSh48TXKml0nKIskreFZRZJj1x3nv5lBhO3IxnhBUDQyM9OUtLoWDUdHXxzvBPVt7QNuErpyhmTdGlOGkEmiHh6rQYLLpL0q+vPY8UZ2GEXQHAp2Vk7pKWybqljrfqspd1rGyb4BoeSnXb9+x8qBrz/xoJMvVr1GediRRiOByC8ACFtsG3hh8u9+unuS09TVspohpUCoGRnre58bseAPSzu4yNe+87F2v7pIYb/IgjHAwAIaasuz9G5k8d7PJCvN/db2W0XnqrHXh98mbX7/fLnr+7qucZv9P7hdBl65H936eH/3eW1nXsO0/ZPD3F8BAZEeAEQlC4/J12X5ab1OSzyufIa1TV/PpSQdjx4tA9yGKQ3dY42LV9foa/OnKQEa4wykxJ0Y0GW4mLYSWKklFba9d0XdspxbODjIE7EzrnwhvACIGh5OizS00qirbsbh/053L0xz1cc6Ln245IPtGxetlZdnjPs50W3wea3DISdc+EN4QVAyBho6bWZIwmGwmWoZ84NAWb4SnbW6o5hTL5Ot8Wzcy68ol8UQMhzH0kw0n69uVodx4ekOOV6aLp7XHYMK0yuXpTD5Fx4Rc8LgLDgPpLgxL1DTobLkJ7ZuleTxo/ilOshcK8oGqooi/To12YyeRqDYqk0gLDi3rW1rKpO/++dWq+rlcyYd1qy3tjVOGAPwm0XMjemt9JKu5avH/ocF0laywZ0EY19XggvANR3+/m9Da16+NWPJWlE5sX0dsucLBWeFdk7+DpdhrbtbtQdf6jQ4WND2yHZ3ePCWUWRjfBCeAHggact6UdSpO4Zc7LfV3pcIBFeCC8ABtS7N6as6jO9vNM+YNuLzzhF//jooOnndve5rLshcuZtlFbadfv6imH1Zo1PiFXxVWdHzPcK3rHDLgAMoPdy68UzJmnSuCr9enN1n+3qoyzSsnnZ+uIZqUMKL4a6A0zRxirNz0nrGUIK15OuO7pc+t5fKocVXFZ8aZq++aXTw+L7AP8jvACIaKsuz9G3Cs/UM1v36tOm1j477DpdxpBPuXZvb19e3aSCqckeh1RGx0XrwtNP0Q3nZ+r8U5ND8g28ZKdd331xp1razO+aKzG/BSODYSMA8GK4p1yfn52kOdNS9POyj732TIxLiNUDITZ0cjIHZzK/BQNhzgvhBcAI8tUp172tvf482UbFaeueBkndQ1vB2Csz3DAXqZOZYR7hhfACYISV7LQPesq11D3nJWl0nM6alKjXP24w/fwW9V/CHWy9Mk6XoS/8uGxIw2jjRsXqV1+fGZRBDMGFCbsAMMJ6n3JdVlWnp97c2y9wuN+af3xlrtq7XEMKL55+izzc2qnl6yv0WABXL/WebNzQ0j6k4GKR9MDVZ2vutBTfFYiIRHgBAJPcK5UKpiYrPzup30TctF5DIydz0vWJijZW6ZIzU7X900OqcxxTw5F2HT7WKYuPh5dOZv+W5NFx+vGVuUHTa4TwwrARAAyTtyXQTpehC366acQ2xEsaHTfgkJUvhpdOZv+WxPgYvf39+YqL4exfmDeU929+sgBgmNw9MYtnTFLB1L69HyN90rW3uTbu4aXSyoE33HMzczq202WoaGPVsI9ReOCqcwgu8CmGjQDARxbkpuuxG2bqnhff0+HWoZ33Mxwnbo53Ik/DQJ5WAZVXNw27x+i2C7PZwwU+x7ARAPiY02Xo0U2f6PHXd6u1w+nTz/XcsvN7dhDubaBhIHfM+dX1MzUlOUGbdzXoxYr92lV/ZEifN2l0rO5fnMseLhi2oFkqfejQId1111166aWXJElf/vKX9cgjj2jcuHEe23d2dur73/++SkpKtGfPHtlsNl166aV64IEHNHGiuX8QhBcAwcp98nLvvVwcrZ369z9UjNjnSEu0KneSTVOSRiszOUFTkhM0edwo3fhkueqaB+5NibJIHkaQvPrBFdOVMtYaVkceIHCCJrwsXLhQ+/fv1xNPPCFJ+rd/+zdlZWVp48aNHts7HA599atf1bJly3Tuuefq0KFDWrFihbq6uvT222+b+pyEFwChprTS7nFoaYw1WkfafdtT01t8TJQuOO0UXXBasn61abcajrR7nPdiUffKqje+ewmBBSMmKMLLBx98oJycHG3btk2zZ8+WJG3btk0FBQX68MMPdcYZZ5h6nrfeekv5+fn69NNPNWXKlEHbE14AhCJPvTJfyErSRQ/+w/T8k1PGWvVfV5+j/YdaVdPUqk8bu//cffCIOp2D/1f/0DXn6qq8yZI+H2aSPO9lE0knZ8M/gmKTuq1bt8pms/UEF0k6//zzZbPZtGXLFtPhxeFwyGKxDDjU1N7ervb29p6Pm5ubT6puAAiE6CiL5p6Wormn9d3QbfWiHNNLln+0+CxdfOaEfte37m7Q1379z0Efnz5uVM/fF+Sma90NM73uZQMEis/CS11dnSZM6P+PaMKECaqrqzP1HG1tbbrnnnt0/fXXD5jCiouLVVRUdFK1AkCwGihE9DY+IVbFXvZ5yc9OVrotXnWONq/DQPnZSf0+9/yctAH3sgECZcjh5b777hs0LLz11luSJIul/w+4YRger5+os7NT1113nVwul9auXTtgu1WrVmnlypU9Hzc3NysjI2PQ5weAUNE7RAxnh133njO3r68Y8EiD1YtyPD6Hey8bIJgMObzceeeduu6667y2ycrK0s6dO/XZZ5/1u+/gwYNKTU31+vjOzk5de+21qq6u1qZNm7yOfVmtVlmtVnPFA0CIOtkQwTAQwsmQw0tKSopSUgY/ZKugoEAOh0Pl5eXKz8+XJP3zn/+Uw+HQnDlzBnycO7js2rVL//jHP5ScTOIHgJHAMBDChc+XStfW1urxxx+X1L1UOjMzs89S6TPPPFPFxcW68sor1dXVpauvvloVFRV6+eWX+/TQJCUlKS4ubtDPyWojAABCT9CcbfTss8/q7LPPVmFhoQoLC3XOOefomWee6dPmo48+ksPhkCTt379fL730kvbv368ZM2YoPT2957ZlyxZflgoAAEIExwMAAICAC5qeFwAAgJFGeAEAACGF8AIAAEIK4QUAAIQUwgsAAAgphBcAABBSCC8AACCk+OxU6UBxb1vT3Nwc4EoAAIBZ7vdtM9vPhV14aWlpkSROlgYAIAS1tLTIZrN5bRN2O+y6XC7V1tZq7Nixslg4bGwgzc3NysjI0L59+9iJOIjxOoUGXqfQwOsU3AzDUEtLiyZOnKioKO+zWsKu5yUqKkqTJ08OdBkhIzExkX/EIYDXKTTwOoUGXqfgNViPixsTdgEAQEghvAAAgJBCeIlQVqtVq1evltVqDXQp8ILXKTTwOoUGXqfwEXYTdgEAQHij5wUAAIQUwgsAAAgphBcAABBSCC8AACCkEF4gSfrb3/6m2bNna9SoUUpJSdFVV10V6JIwgPb2ds2YMUMWi0XvvPNOoMtBL3v37tXSpUuVnZ2tUaNGaerUqVq9erU6OjoCXRokrV27VtnZ2YqPj1deXp42b94c6JIwTGG3wy6G7oUXXtCyZcv0k5/8RJdccokMw9B7770X6LIwgP/8z//UxIkT9e677wa6FJzgww8/lMvl0uOPP65p06apsrJSy5Yt09GjR/Wzn/0s0OVFtA0bNmjFihVau3at5s6dq8cff1wLFy5UVVWVpkyZEujyMEQslY5wXV1dysrKUlFRkZYuXRrocjCI//mf/9HKlSv1wgsv6KyzztKOHTs0Y8aMQJcFLx588EGtW7dOe/bsCXQpEW327NmaOXOm1q1b13Nt+vTp+spXvqLi4uIAVobhYNgowlVUVOjAgQOKiorSeeedp/T0dC1cuFDvv/9+oEvDCT777DMtW7ZMzzzzjBISEgJdDkxyOBxKSkoKdBkRraOjQ9u3b1dhYWGf64WFhdqyZUuAqsLJILxEOPdvg/fdd5++//3v6+WXX9b48eN10UUXqampKcDVwc0wDN18881avny5Zs2aFehyYNLu3bv1yCOPaPny5YEuJaI1NDTI6XQqNTW1z/XU1FTV1dUFqCqcDMJLmLrvvvtksVi83t5++225XC5J0r333qurr75aeXl5+u1vfyuLxaI///nPAf4qwp/Z1+mRRx5Rc3OzVq1aFeiSI5LZ16m32tpaLViwQNdcc41uvfXWAFWO3iwWS5+PDcPodw2hgQm7YerOO+/Udddd57VNVlaWWlpaJEk5OTk9161Wq0499VTV1NT4tEaYf53uv/9+bdu2rd+ZLLNmzdLXv/51/f73v/dlmRHP7OvkVltbq4svvlgFBQV64oknfFwdBpOSkqLo6Oh+vSz19fX9emMQGggvYSolJUUpKSmDtsvLy5PVatVHH32kCy64QJLU2dmpvXv3KjMz09dlRjyzr9Mvf/lL3X///T0f19bW6rLLLtOGDRs0e/ZsX5YImX+dJOnAgQO6+OKLe3oxo6Lo4A60uLg45eXlqaysTFdeeWXP9bKyMi1evDiAlWG4CC8RLjExUcuXL9fq1auVkZGhzMxMPfjgg5Kka665JsDVwe3EpZxjxoyRJE2dOlWTJ08OREnwoLa2Vl/84hc1ZcoU/exnP9PBgwd77ktLSwtgZVi5cqVuvPFGzZo1q6dHrKamhvlIIYrwAj344IOKiYnRjTfeqGPHjmn27NnatGmTxo8fH+jSgJDy97//XZ988ok++eSTfqGSXSkCa8mSJWpsbNSaNWtkt9uVm5urkpISephDFPu8AACAkMJgLAAACCmEFwAAEFIILwAAIKQQXgAAQEghvAAAgJBCeAEAACGF8AIAAEIK4QUAAIQUwgsAAAgphBcAABBSCC8AACCkEF4AAEBI+f8YJoULqfzzIwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "l = 1\n",
    "i = 2\n",
    "j = 0\n",
    "\n",
    "inputs = model.spline_preacts[l][:,j,i]\n",
    "outputs = model.spline_postacts[l][:,j,i]\n",
    "# they are not ordered yet\n",
    "rank = np.argsort(inputs)\n",
    "inputs = inputs[rank]\n",
    "outputs = outputs[rank]\n",
    "plt.plot(inputs, outputs, marker=\"o\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9e62f17",
   "metadata": {},
   "source": [
    "If we are interested in the range of some activation function, we can use get_range."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1a978202",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "x range: [-6.95 , 1.54 ]\n",
      "y range: [-0.20 , 0.85 ]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(tensor(-6.9550), tensor(1.5376), tensor(-0.1954), tensor(0.8475))"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.get_range(l,i,j)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
